/**
 * Generali Solutions d'assurances - Tous droits réservés &copy; 2007 - 2010
 */

package fr.generali.accueilclient.opt.listenomcampagne.builder;

import fr.generali.accueilclient.opt.listenomcampagne.om.ICritereIdentifiant;
import fr.generali.accueilclient.opt.listenomcampagne.om.ICritereNomCampagneIdentifiant;
import fr.generali.accueilclient.opt.listenomcampagne.om.impl.DTOCritereNomCampagneIdentifiant;
import java.util.ArrayList;
import java.util.List;

/**
 * @author Holmes Kelly
 */
public class DTOCritereNomCampagneIdentifiantBuilder extends
                DTOCritereNomCampagneIdentifiantBuilderBase<DTOCritereNomCampagneIdentifiantBuilder> {

    /**
     * constructeur
     */
    public DTOCritereNomCampagneIdentifiantBuilder() {
        super(new DTOCritereNomCampagneIdentifiant());
    }

    /**
     * @return DTOCritereNomCampagneIdentifiantBuilder
     */
    public static DTOCritereNomCampagneIdentifiantBuilder dTOCritereNomCampagneIdentifiant() {
        return new DTOCritereNomCampagneIdentifiantBuilder();
    }

    /**
     * @return DTOCritereNomCampagneIdentifiant
     */
    public ICritereNomCampagneIdentifiant build() {
        return getInstance();
    }
}

/**
 * @author Holmes Kelly
 * @param <GeneratorT>
 */
class DTOCritereNomCampagneIdentifiantBuilderBase<GeneratorT extends DTOCritereNomCampagneIdentifiantBuilderBase<GeneratorT>> {

    /**
     * instance
     */
    private ICritereNomCampagneIdentifiant instance;

    /**
     * @param aInstance instance
     */
    protected DTOCritereNomCampagneIdentifiantBuilderBase(ICritereNomCampagneIdentifiant aInstance) {
        instance = aInstance;
    }

    /**
     * @return instance
     */
    protected ICritereNomCampagneIdentifiant getInstance() {
        return instance;
    }

    /**
     * @param aValue id intermediaire
     * @return GeneratorT
     */
    @SuppressWarnings("unchecked")
    public GeneratorT buildIdIntermediaire(String aValue) {
        instance.setIdIntermediaire(aValue);

        return (GeneratorT ) this;
    }

    /**
     * @param aValue nom campagne
     * @return GeneratorT
     */
    @SuppressWarnings("unchecked")
    public GeneratorT buildNomCampagne(String aValue) {
        instance.setNomCampagne(aValue);

        return (GeneratorT ) this;
    }

    /**
     * @param aValue liste cible produit
     * @return GeneratorT
     */
    @SuppressWarnings("unchecked")
    public GeneratorT buildListeCibleProduit(List<ICritereIdentifiant> aValue) {
        instance.setListeCibleProduit(aValue);

        return (GeneratorT ) this;
    }

    /**
     * @param aValue add element to Liste cible produit
     * @return GeneratorT
     */
    @SuppressWarnings("unchecked")
    public GeneratorT buildAddedListeCibleProduitElement(ICritereIdentifiant aValue) {
        if (instance.getListeCibleProduit() == null) {
            instance.setListeCibleProduit(new ArrayList<ICritereIdentifiant>());
        }

        ((ArrayList<ICritereIdentifiant> ) instance.getListeCibleProduit()).add(aValue);

        return (GeneratorT ) this;
    }

    /**
     * @param aValue liste objectif campagne
     * @return GeneratorT
     */
    @SuppressWarnings("unchecked")
    public GeneratorT buildListeObjectifCampagne(List<ICritereIdentifiant> aValue) {
        instance.setListeObjectifCampagne(aValue);

        return (GeneratorT ) this;
    }

    /**
     * @param aValue adfd element to liste objectif campagne
     * @return GeneratorT
     */
    @SuppressWarnings("unchecked")
    public GeneratorT buildAddedListeObjectifCampagneElement(ICritereIdentifiant aValue) {
        if (instance.getListeObjectifCampagne() == null) {
            instance.setListeObjectifCampagne(new ArrayList<ICritereIdentifiant>());
        }

        ((ArrayList<ICritereIdentifiant> ) instance.getListeObjectifCampagne()).add(aValue);

        return (GeneratorT ) this;
    }

    /**
     * @param aValue liste statut campagne
     * @return GeneratorT
     */
    @SuppressWarnings("unchecked")
    public GeneratorT buildListeStatut(List<ICritereIdentifiant> aValue) {
        instance.setListeStatut(aValue);

        return (GeneratorT ) this;
    }

    /**
     * @param aValue adfd element to liste statut campagne
     * @return GeneratorT
     */
    @SuppressWarnings("unchecked")
    public GeneratorT buildAddedListeStatutElement(ICritereIdentifiant aValue) {
        if (instance.getListeStatut() == null) {
            instance.setListeStatut(new ArrayList<ICritereIdentifiant>());
        }

        ((ArrayList<ICritereIdentifiant> ) instance.getListeStatut()).add(aValue);

        return (GeneratorT ) this;
    }
}
